Software tools for analyzing source code are known. For example, there are software programs used as static analysis tools that: (i) maintain, measure and analyze critical and/or large code bases; (ii) provide metrics and graphs; (iii) perform dependency analysis; (iv) perform standards testing; (v) work with various programming languages, such as C, C++, Objective C, Java (note: the term(s) “Java” may be subject to trademark rights in various jurisdictions throughout the world and are used here only in reference to the products or services properly denominated by the marks to the extent that such trademark rights may exist), hypertext markup language (HTML), etc.; (vi) provide searching; and/or (vii) provide custom and/or canned reports.
An abstract syntax tree (AST) is a tree representation of the abstract syntactic structure of source code. The source code is written in a programming language. Each node of the tree representation represents a construct in the source code. The syntax is abstract because it does not represent every detail appearing in the real syntax. For example, grouping parentheses are implicit in the tree structure. An if-condition-then expression, in the source code, may be denoted, in the tree representation, by a single node with two branches. Abstract syntax trees are commonly used in program analysis and program transformation systems.